'''
一个查询企业信息的第三方api
需求：
    1.根据企业名称 调用第三方api 并解析数据 【企业名称， 信用代码， 法人名称， 注册日期， 注册地址， 状态】
    2.获取返回的字段数据写入excel文件中；
'''
import urllib.request
import urllib.parse
import json
import xlsxwriter


# 初始化要查询的企业列表
def initCompanyName():
    companyNameList = [
        '北京京睿世通科技发展有限公司',
        '北京普天永信数码科技有限公司',
        '北京瑞华基业科技有限公司',
        '北京华睿天成安防设备有限公司',
        '北京美途艺尚科技有限公司',
        '北京宝鑫鸿业科技有限公司',
        '北京方升辉科贸有限责任公司',
        '北京普天太力通信科技有限公司',
        '北京宝利信通科技有限公司',
        '北京金穗科技开发有限责任公司',
        '北京泰福特电子科技有限公司',
        '北京物联新泊科技有限公司',
        '宝利信通（北京）软件股份有限公司',
        '北京正锐通科技有限公司',
        '北京佳华万通科技有限公司',
        '北京凯宝网络科技有限公司'
    ];
    return companyNameList


# 根据企业名称获取 企业信息 并返回接口数据；
def getCompanyInfo(companyName):
    company_name = urllib.parse.quote(companyName)
    url = 'https://public.creditchina.gov.cn/private-api/getTyshxydmDetailsContent?keyword=' + company_name + '&scenes=defaultscenario&searchState=1&uuid=&tyshxydm='
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
    }
    request = urllib.request.Request(url=url, headers=headers)
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')
    # print(content)
    return content


# 解析json，并返回一个字典dict对象
def parseJSON(content):
    res = json.loads(content)
    print(res)
    '''json_param: {"status":1,"message":"成功","data":{"punishmentStatus":"no","data":{"columnList":["name","enttype","esdate","dom"],"sencesMap":{"name":"法定代表人/负责人/执行事务合伙人","enttype":"企业类型","esdate":"成立日期","dom":"住所"},"dataSource":"市场监督管理总局","data_catalog":"工商存续（企业）","table_name":"credit_scjdglzj_fr_gscxqy","entity":{"name":"杜樑","enttype":"有限责任公司(自然人投资或控股)","esdate":"2003-05-31","dom":"北京市朝阳区科荟路33号6幢1层101内102室","uuid":"84e5a781aa158e55ec5e6df789fcb3dc","recid":"49217E3525E9406B83BF203B2168858C","regorg":"朝阳区市场监督管理局"}},"headEntity":{"recid":"49217E3525E9406B83BF203B2168858C","tyshxydm":"91110105751340081X","zzjgdm":"I","entity_type":"1","jgmc":"北京海鑫世纪商贸有限公司","zcdjh":null,"record_source":"企业法人","status":"存续"},"rewardStatus":"yes"}}'''
    # 获取json中 企业名称， 信用代码， 法人名称， 注册日期， 注册地址， 状态
    res_data = res.get('data')
    res_data_headEntity = res_data.get('headEntity')
    # print(res_data_headEntity.get('jgmc'), res_data_headEntity.get('tyshxydm'), res_data_headEntity.get('status'))
    res_data_data = res_data.get('data')
    if res_data_data == None:
        return
    res_data_data_entity = res_data_data.get('entity')
    # print(res_data_data_entity.get('name'), res_data_data_entity.get('dom'), res_data_data_entity.get('esdate'))

    row_dict = {
        # 企业名称放入容器中
        'companyName': res_data_headEntity.get('jgmc'),
        # 信用代码放入容器中
        'companyCode': res_data_headEntity.get('tyshxydm'),
        # 法人姓名放入容器中
        'comapanyPersonName': res_data_data_entity.get('name'),
        # 注册日期放入容器中
        'registerDate': res_data_data_entity.get('esdate'),
        # 注册地址放入容器中
        'redisterAddress': res_data_data_entity.get('dom'),
        # 状态放入容器中
        'status': res_data_headEntity.get('status')
    }
    # 将字典 转 列表
    row_list = [i for i in row_dict.values()]
    return row_list


# 根据数据生成excel文件
def generateExcel(excelData):
    workbook = xlsxwriter.Workbook('D:\\hxy\\test\\sample_data1.xlsx')
    sheet = workbook.add_worksheet()
    # 定义标题头：企业名称， 信用代码， 法人名称， 注册日期， 注册地址， 状态
    title = [u'企业名称', u'信用代码', u'法人名称', u'注册日期', u'注册地址', u'状态']

    # 定义excel数据体 ''' 数据体： [[],[],[]]'''
    data = excelData
    format = workbook.add_format()  ##添加格式
    sheet.set_column('A:Z', 30)  ##这个是把各个单元格从A到Z拉宽30
    ##把标题放在A1行
    sheet.write_row('A1', title)
    # 填充表格内容 写死的内容
    # sheet.write_row('A2', data[0], format)
    # sheet.write_row('A3', data[1], format)
    # sheet.write_row('A4', data[2], format)
    # sheet.write_row('A5', data[3], format)
    # sheet.write_row('A6', data[4], format)

    # 填充表格内容 根据列表循环的内容
    index = 1
    for item in data:
        index +=1
        label = 'A{0}'.format(str(index))
        sheet.write_row(label, item, format)

    # 关闭
    workbook.close()


if __name__ == '__main__':
    companyNameList = initCompanyName()
    print(companyNameList)
    excel_row = {}  # 定义导出excel行数据
    excel_data = []
    for index in range(len(companyNameList)):
        company_name = companyNameList[index]
        res = getCompanyInfo(company_name)
        data = parseJSON(res)
        # print('_main ', data)
        key = str(index)
        if data != None:
            excel_row[key] = data
            excel_data.append(data)

    # print(excel_row)
    # print(excel_data)
    generateExcel(excel_data)